2014-12-23 2 views
1

Cypher Text로 변환하려는 N-Triples의 덤프가 있으므로 Neo4j 데이터베이스에 직접로드 할 수 있습니다. 내가N-Triples을 Cypher Text로 변환

<http://www.foo.org/triple1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.foo.org/Human> 

즉 스크립트를 사용하여 쉽게 변환 할 수 있습니다 rdf-syntax-ns#type 같은 간단한 온톨로지를 들어 쉽게

CREATE (t1:Human { type : "triple1" }) 

로 변환 할 수 있으며 정확하고 내가 원하는대로가 될 수 있습니다. 그러나 <http://www.w3.org/2002/07/owl#equivalentProperty>과 같은 복잡한 물건의 경우에는 망할 것입니다.

따라서 내 질문은 <http://www.w3.org/2002/07/owl#equivalentProperty>을 Cypher 텍스트에 대한 술어로 사용하여 트리플을 변환하는 방법입니까?

답변

2

RDF를 Neo4J로 가져 오는 방법에 대한 일반적인 문제는 this related question을 참조하십시오.

특히 equivalentProperty 물건의 경우 여기에서 엉망이 된 이유는 equivalentProperty이 모델 자체를 참조하는 "메타"문이라는 것입니다. 즉이 경우에는 데이터가 아니라 속성에 대한 설명이됩니다. Neo4J에서는 데이터베이스에 명시 적 모델이 없습니다 (시간이 지남에 따라 변경 될 수 있기를 기대하지만, 지금은 그 방법입니다). 그래서 일반적으로 재산에 관해서 이야기 할 수는 없습니다. 아마도 가장 좋은 방법은 해당 속성 메타 데이터를 나타내는 새로운 종류의 노드를 만드는 것입니다.

예. 당신이 RDF가 있다면 :

<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#equivalentProperty> <http://my-ns.org/vocab#foobar> 

는 그런 다음에 그 회전 수 : 우리가 속성 메타 데이터의 실제을 :Property 노드를 생성하고 있기 때문에

MERGE (p1:Property { ns: "http://www.w3.org/1999/02/22-rdf-syntax-ns#", name:"type" }, 
     (p2:Property { ns: "http://my-ns.org/vocab#", name: "foobar" }), 
     (p1)-[:equivalentProperty]->(p2); 

이 작동하는 이유 같습니다. RDF에서는 기본적으로 neo4j를 사용하지 않지만 RDF에서는 RDF에서 해당 노드가 고유 한 URI를 가지고 있기 때문에 RDF에서는 "노드"입니다.

+0

답변을 주셔서 감사합니다. sameAs와 hasType과 같은 몇 가지 사항조차도 Neo4j와 엉터리입니다. 슬픈 부분은이 물건들이 모든 종류의 세부 사항으로 들어가는 ACM 서류 제출에 들어가게된다는 것입니다. 나는 당신이 제안한 것을 통합했고 스크립트를 실행 중입니다. 나는 일단 대답이 정확하면 답을 표시 할 것입니다. 다시 한번 감사드립니다. –

+0

'sameAs'와 같은 것은 같은 이유로 동일한 문제를 갖습니다. SameAs는 한 모델 항목을 다른 모델 항목과 동일하게 표시합니다. 말하자면 "모델을 모델링"해야합니다. – FrobberOfBits

+0

네, Neo4j 팀이 그런 것들을 다루기 위해 더 많은 것을 생각해 내길 바래요. –