나는 그것을 수행하는 가장 좋은 방법은 알고리즘을 구현하는 것이라고 생각합니다! 이 작업은 SPARQL 또는 일부 쿼리 방법을 사용하여 완료 할 수 있다고 생각하지 않습니다. Java와 Jena에서 다음 알고리즘을 구현하여 OWL 온톨로지의 노드 집합을 연결하는 모든 경로를 찾았습니다. 두 개의 필수 노드를 입력으로 사용할 수 있습니다.
는 그래프
G= (V, E)
주어 :
- 가 감독
- 비순환를
- 비 가중치
- 가질 수보다 두 정점들 (따라서, 소스와 목적지된다 간의 하나의 에지보다 가장자리를 결정하기에 충분하지 않음).
그리고 주어진 정점 세트를 vSet
이라고합니다. 버텍스가 포함 된 vRoot
; 우리는 ALL 경로를 찾을 필요가 다음을 존중 pSet
vSet
사이의 요소 :
- Vroot를에서 연결할 수 있어야
pSet
에서 어떤 경로의 소스로 나타나는 정점.
pSet
의 경로는 vSet
의 출처와 대상을 가져야하며 vSet
의 다른 꼭지점을 포함해서는 안됩니다.
다음의 알고리즘은 다른 정점 vSet
의 v1
도달 할 때까지 반복 당 하나의 에지에 전류 경로를 각각 증가 (상기 1)에 따르면 vRoot
에서 시작하는, BFS 유사하다; 이 도달 경로를 저장하고 v1
부터 시작하는 새로운 경로 집합을 시작하십시오.
output = ∅;
maxLengthPaths = ∅;
1. add all edges that vRoot is there source to maxLengthPaths
2. while size(maxlengthpaths) != ∅ do
(a) paths := ∅;
(b) extendedPaths := ∅;
(c) foreach path p in maxLengthPaths do
i. if (destination of p in vSet)
1. add p to output
2. for each edge e that destination of p is its source
A. add e to extendedPaths
ii. else
1. add p to paths
iii. for path p1 in paths
1. for each edge that destination of p1 is its source
A. extend p1 by a edge and add it to extendedPaths
(d) maxLengthPaths = extendedPaths
여기 전에 먼저 검색 기능을 사용하시기 바랍니다 요청되었습니다 여기
는 의사 코드입니다. – AKSW"쿼리를 작성하는 데 도움이되는 예제가 있습니까?" "책, 도구, 소프트웨어 라이브러리, 튜토리얼 또는 기타 오프 사이트 리소스를 추천하거나 찾도록 요청하는 질문은 유인책의 답변과 스팸을 끌어 당기는 경향이 있으므로 스택 오버플로에 대한 주제와 관련이 없습니다. 지금까지 그것을 해결하기 위해 완료되었습니다. " 시도를 표시하고이를 수정하는 방법을 묻는 것이 더 생산적 일 것입니다. –
그렇다면 @AKSW에서 언급했듯이 도움이 될 수있는 코드에 대한 다른 질문이 있습니다. 난 당신이 http://stackoverflow.com/q/30916040/, http://stackoverflow.com/q/19587520/, http://stackoverflow.com/q/18024413/ 및 http : // stackoverflow 찾을 수있을 것 같아요. .com/q/28900290/도움이됩니다. 당신이 그것들을 보면서 오른쪽의 "링크 된"섹션에 열거 된 질문들을 살펴보십시오; 거기에 더 많은 도움이되는 질문과 대답이있을 수 있습니다. –