最近Jena 3.1.0から3.0.1への切り替えが行われ、JenaがJSON- LDを文字列形式に変換します。Jena 3.0.1と3.1.0、JSON-LDにJSON-LDがないプレフィックス
以下JSON-LDはイエナ3.0.1と次のようになります。
以下{
"@graph" : [ {
"@id" : "data:4d1a75b0-484f-4dfa-998f-4382f34e411f",
"@type" : "assertion:assertion",
"data:UUID" : "4d1a75b0-484f-4dfa-998f-4382f34e411f"
}, {
"@id" : "data:UUID",
"@type" : "owl:DatatypeProperty",
"rdfs:label" : {
"@language" : "en",
"@value" : "UUID"
}
}, {
"@id" : "urn:example.data.1.0",
"@type" : "owl:Ontology",
"rdfs:comment" : {
"@language" : "en",
"@value" : "This is an OWL ontology to describe data."
},
"rdfs:label" : {
"@language" : "en",
"@value" : "Data ontology"
},
"owl:versionInfo" : "1.0"
}, {
"@id" : "assertion:assertion",
"@type" : "owl:Class",
"subClassOf" : "data:entity"
} ],
"@context" : {
"comment" : {
"@id" : "http://www.w3.org/2000/01/rdf-schema#comment",
"@type" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
},
"label" : {
"@id" : "http://www.w3.org/2000/01/rdf-schema#label",
"@type" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
},
"versionInfo" : {
"@id" : "http://www.w3.org/2002/07/owl#versionInfo",
"@type" : "http://www.w3.org/2001/XMLSchema#string"
},
"UUID" : {
"@id" : "urn:example.data#UUID",
"@type" : "http://www.w3.org/2001/XMLSchema#string"
},
"subClassOf" : {
"@id" : "http://www.w3.org/2000/01/rdf-schema#subClassOf",
"@type" : "@id"
},
"data" : "urn:example.data#",
"rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"owl" : "http://www.w3.org/2002/07/owl#",
"xsd" : "http://www.w3.org/2001/XMLSchema#",
"rdfs" : "http://www.w3.org/2000/01/rdf-schema#",
"assertion" : "urn:example.data.assertion#"
}
}
JSON-LDはイエナ3.1.0で次のようになります。
{
"@graph" : [ {
"@id" : "data:4d1a75b0-484f-4dfa-998f-4382f34e411f",
"@type" : "assertion:assertion",
"UUID" : "4d1a75b0-484f-4dfa-998f-4382f34e411f"
}, {
"@id" : "data:UUID",
"@type" : "owl:DatatypeProperty",
"label" : {
"@language" : "en",
"@value" : "UUID"
}
}, {
"@id" : "urn:example.data.1.0",
"@type" : "owl:Ontology",
"comment" : {
"@language" : "en",
"@value" : "This is an OWL ontology to describe data."
},
"label" : {
"@language" : "en",
"@value" : "Data ontology"
},
"versionInfo" : "1.0"
}, {
"@id" : "assertion:assertion",
"@type" : "owl:Class",
"subClassOf" : "data:entity"
} ],
"@context" : {
"comment" : {
"@id" : "http://www.w3.org/2000/01/rdf-schema#comment"
},
"label" : {
"@id" : "http://www.w3.org/2000/01/rdf-schema#label"
},
"versionInfo" : {
"@id" : "http://www.w3.org/2002/07/owl#versionInfo"
},
"UUID" : {
"@id" : "urn:example.data#UUID"
},
"subClassOf" : {
"@id" : "http://www.w3.org/2000/01/rdf-schema#subClassOf",
"@type" : "@id"
},
"data" : "urn:example.data#",
"rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"owl" : "http://www.w3.org/2002/07/owl#",
"xsd" : "http://www.w3.org/2001/XMLSchema#",
"rdfs" : "http://www.w3.org/2000/01/rdf-schema#",
"assertion" : "urn:example.data.assertion#"
}
}
違い2つの間に名前空間の接頭辞data:とrfds:UUIDやラベルのようなタグの隣には表示されなくなりました。
JSON-LDはJenaによれば有効ですが、あいにくJSON-LDをプレフィックスが存在すると予想されるサーバーに送信する必要があります。
出力を制御するためにできることはありますか?私たちが子供の手袋で私たちを処理してください、イエナとの専門家ではありません。(以下
は、XML形式でオリジナルのメッセージです:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:data="urn:example.data#"
xmlns:assertion="urn:example.data.assertion#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:owl="http://www.w3.org/2002/07/owl#">
<owl:Ontology rdf:about="urn:example.data.1.0">
<owl:versionInfo>1.0</owl:versionInfo>
<rdfs:label xml:lang="en">Data ontology</rdfs:label>
<rdfs:comment xml:lang="en">This is an OWL ontology to describe data.</rdfs:comment>
</owl:Ontology>
<owl:Class rdf:about="urn:example.data.assertion#assertion">
<rdfs:subClassOf rdf:resource="urn:example.data#entity"/>
</owl:Class>
<owl:DatatypeProperty rdf:about="urn:example.data#UUID">
<rdfs:label xml:lang="en">UUID</rdfs:label>
</owl:DatatypeProperty>
<assertion:assertion rdf:about="urn:example.data#4d1a75b0-484f-4dfa-998f-4382f34e411f">
<data:UUID>4d1a75b0-484f-4dfa-998f-4382f34e411f</data:UUID>
</assertion:assertion>
</rdf:RDF>
以下、我々が実行されている最小限のコードです:
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("convert-xml-json-test/temp.xml");
String inputXml = IOUtils.toString(inputStream);
// Convert the XML to RDF model
StringReader stringReader = new StringReader(inputXml);
Model model = ModelFactory.createDefaultModel();
model.read(stringReader, null, RDFLanguages.RDFXML.getLabel());
// Convert the model to JSON String
ByteArrayOutputStream out = new ByteArrayOutputStream();
model.write(out, RDFLanguages.JSONLD.getLabel());
outputJson = out.toString(StandardCharsets.UTF_8.toString());
私たちは、MVNの依存関係に見られるように、私たちの最小限のテストプロジェクトのみイエナを含むので、それはイエナの変化によるものであることを非常に確信している:木
+- org.apache.jena:jena-tdb:jar:3.1.0:compile
| +- org.apache.jena:jena-arq:jar:3.1.0:compile
| | +- org.apache.jena:jena-core:jar:3.1.0:compile
| | | +- org.apache.jena:jena-iri:jar:3.1.0:compile
| | | +- xerces:xercesImpl:jar:2.11.0:compile
| | | | \- xml-apis:xml-apis:jar:1.4.01:compile
| | | +- commons-cli:commons-cli:jar:1.3:compile
| | | \- org.apache.jena:jena-base:jar:3.1.0:compile
| | | \- com.github.andrewoma.dexx:collection:jar:0.6:compile
| | +- org.apache.jena:jena-shaded-guava:jar:3.1.0:compile
| | +- org.apache.httpcomponents:httpclient:jar:4.2.6:compile
| | | +- org.apache.httpcomponents:httpcore:jar:4.2.5:compile
| | | \- commons-codec:commons-codec:jar:1.6:compile
| | +- com.github.jsonld-java:jsonld-java:jar:0.7.0:compile
| | | +- com.fasterxml.jackson.core:jackson-core:jar:2.3.3:compile
| | | +- com.fasterxml.jackson.core:jackson-databind:jar:2.3.3:compile
| | | | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.3.0:compile
| | | \- commons-io:commons-io:jar:2.4:compile
| | +- org.apache.httpcomponents:httpclient-cache:jar:4.2.6:compile
| | +- org.apache.thrift:libthrift:jar:0.9.2:compile
| | +- org.slf4j:jcl-over-slf4j:jar:1.7.20:compile
| | +- org.apache.commons:commons-csv:jar:1.0:compile
| | \- org.apache.commons:commons-lang3:jar:3.3.2:compile
| \- org.slf4j:slf4j-api:jar:1.7.20:compile
\- junit:junit:jar:4.11:test
\- org.hamcrest:hamcrest-core:jar:1.3:test
下回ります
他のシステムでこれらの設定が必要なのはなぜですか?同じRDF(RDF 1.1用)https://issues.apache.org/jira/browse/JENA-1163です。このため、rdf:langStringとxsd:文字列は表示されなくなりました。RDF 1.1では必要ないためです。それは@typeを変更します。それはサードパーティ製のjsonld-javaライブラリによる書き込みに影響するようです。設定の詳細についてはhttps://issues.apache.org/jira/browse/JENA-1208も参照してください。 – AndyS
非常に長くて複雑な企業の話ですが、私はそれをクライアント側で悪いデザインとしてまとめています。 JSON-LDを通常のJSONのように解析しています。我々はそれをクライアントに説明しようとしましたが、変更を加えるつもりはありません。最終的に彼らの間違いは私たちの問題となり、私たちは水曜日までに期限を迎えました。 JSON-LDを解析してプレフィックスを再適用するクラスをコーディングしています。これまでのところうまくいくようです。我々はいくつかのユニットテストを実行した後に投稿します。 – Thirlan
"riot --pretty JSONLD"を実行し、3.1.0の出力を読み込むJena 3.0.1プロセスがあります。それはあなたがそれを通すならば、古いスタイルで書くでしょう。 – AndyS